#ifndef __MSGTYPE_H__
#define __MSGTYPE_H__

#include "stdint.h"

typedef struct sDM3{
	uint8_t NumberOfHistoricErrorCodes;
	uint8_t NumberOfCurrentErrorCodes;
} DM3_t;

typedef struct sDM2{
	uint32_t DTC5;
	uint32_t DTC4;
	uint32_t DTC3;
	uint32_t DTC2;
	uint32_t DTC1;
} DM2_t;

typedef struct sDM1{
	uint32_t DTC5;
	uint32_t DTC4;
	uint32_t DTC3;
	uint32_t DTC2;
	uint32_t DTC1;
} DM1_t;

typedef struct sCEM{
	uint8_t Timeout_BSD;
	uint8_t Timeout_BST;
	uint8_t Timeout_BCL;
	uint8_t Timeout_BCS;
	uint8_t Timeout_BRO;
	uint8_t Timeout_BCP;
	uint8_t Timeout_BRM;
} CEM_t;

typedef struct sBEM{
	uint8_t Timeout_CSD;
	uint8_t Timeout_CST;
	uint8_t Timeout_CCS;
	uint8_t Timeout_CRO;
	uint8_t Timeout_CTS_CML;
	uint8_t Timeout_CRM_Recognized;
	uint8_t Timeout_CRM_NotRecognized;
} BEM_t;

typedef struct sCSD{
	uint32_t ChargerNo;
	float OutputEnergy;
	uint16_t CumulativeChargingTime;
} CSD_t;

typedef struct sBSD{
	int8_t SingleBatteryMaxTemperature;
	int8_t SingleBatteryMinTemperature;
	float SingleBatteryMaxVoltage;
	float SingleBatteryMinVoltage;
	uint8_t SuspendStateOfChargeSOC;
} BSD_t;

typedef struct sCST{
	uint8_t AbnormalVoltageError;
	uint8_t CurrentMismatchError;
	uint8_t OtherFault;
	uint8_t SuddenStop;
	uint8_t CannotSupplyReqElQuantity;
	uint8_t ChargerIntPartOverTemp;
	uint8_t ChargingConnectorFault;
	uint8_t ChargerOverTemp;
	uint8_t BmsActivelySuspends;
	uint8_t FaultSuspension;
	uint8_t SuspendsArtificially;
	uint8_t ConditionReached;
} CST_t;

typedef struct sBST{
	uint8_t AbnormalVoltageError;
	uint8_t ExcessiveCurrentError;
	uint8_t OtherFaults;
	uint8_t BmsConnectorOverTemp;
	uint8_t VoltageDetectionFault;
	uint8_t HighVoltageRelayFault;
	uint8_t BatterySetOverTemp;
	uint8_t ChargingConnectorFault;
	uint8_t OutputConnectorOverTemp;
	uint8_t InsulationFault;
	uint8_t ChargerSuspendsActively;
	uint8_t SettingValueOfSingleVoltage;
	uint8_t SettingValueOfTotalVoltage;
	uint8_t RequiredSocTargetValue;
} BST_t;

typedef struct sBSP{
	uint8_t BatteryReserved16;
	uint8_t BatteryReserved15;
	uint8_t BatteryReserved14;
	uint8_t BatteryReserved13;
	uint8_t BatteryReserved12;
	uint8_t BatteryReserved11;
	uint8_t BatteryReserved10;
	uint8_t BatteryReserved09;
	uint8_t BatteryReserved08;
	uint8_t BatteryReserved07;
	uint8_t BatteryReserved06;
	uint8_t BatteryReserved05;
	uint8_t BatteryReserved04;
	uint8_t BatteryReserved03;
	uint8_t BatteryReserved02;
	uint8_t BatteryReserved01;
} BSP_t;

typedef struct sBMT{
	int8_t BatteryTemperature128;
	int8_t BatteryTemperature127;
	int8_t BatteryTemperature126;
	int8_t BatteryTemperature125;
	int8_t BatteryTemperature124;
	int8_t BatteryTemperature123;
	int8_t BatteryTemperature122;
	int8_t BatteryTemperature121;
	int8_t BatteryTemperature120;
	int8_t BatteryTemperature119;
	int8_t BatteryTemperature118;
	int8_t BatteryTemperature117;
	int8_t BatteryTemperature116;
	int8_t BatteryTemperature115;
	int8_t BatteryTemperature114;
	int8_t BatteryTemperature113;
	int8_t BatteryTemperature112;
	int8_t BatteryTemperature111;
	int8_t BatteryTemperature110;
	int8_t BatteryTemperature109;
	int8_t BatteryTemperature108;
	int8_t BatteryTemperature107;
	int8_t BatteryTemperature106;
	int8_t BatteryTemperature105;
	int8_t BatteryTemperature104;
	int8_t BatteryTemperature103;
	int8_t BatteryTemperature102;
	int8_t BatteryTemperature101;
	int8_t BatteryTemperature100;
	int8_t BatteryTemperature099;
	int8_t BatteryTemperature098;
	int8_t BatteryTemperature097;
	int8_t BatteryTemperature096;
	int8_t BatteryTemperature095;
	int8_t BatteryTemperature094;
	int8_t BatteryTemperature093;
	int8_t BatteryTemperature092;
	int8_t BatteryTemperature091;
	int8_t BatteryTemperature090;
	int8_t BatteryTemperature089;
	int8_t BatteryTemperature088;
	int8_t BatteryTemperature087;
	int8_t BatteryTemperature086;
	int8_t BatteryTemperature085;
	int8_t BatteryTemperature084;
	int8_t BatteryTemperature083;
	int8_t BatteryTemperature082;
	int8_t BatteryTemperature081;
	int8_t BatteryTemperature080;
	int8_t BatteryTemperature079;
	int8_t BatteryTemperature078;
	int8_t BatteryTemperature077;
	int8_t BatteryTemperature076;
	int8_t BatteryTemperature075;
	int8_t BatteryTemperature074;
	int8_t BatteryTemperature073;
	int8_t BatteryTemperature072;
	int8_t BatteryTemperature071;
	int8_t BatteryTemperature070;
	int8_t BatteryTemperature069;
	int8_t BatteryTemperature068;
	int8_t BatteryTemperature067;
	int8_t BatteryTemperature066;
	int8_t BatteryTemperature065;
	int8_t BatteryTemperature064;
	int8_t BatteryTemperature063;
	int8_t BatteryTemperature062;
	int8_t BatteryTemperature061;
	int8_t BatteryTemperature060;
	int8_t BatteryTemperature059;
	int8_t BatteryTemperature058;
	int8_t BatteryTemperature057;
	int8_t BatteryTemperature056;
	int8_t BatteryTemperature055;
	int8_t BatteryTemperature054;
	int8_t BatteryTemperature053;
	int8_t BatteryTemperature052;
	int8_t BatteryTemperature051;
	int8_t BatteryTemperature050;
	int8_t BatteryTemperature049;
	int8_t BatteryTemperature048;
	int8_t BatteryTemperature047;
	int8_t BatteryTemperature046;
	int8_t BatteryTemperature045;
	int8_t BatteryTemperature044;
	int8_t BatteryTemperature043;
	int8_t BatteryTemperature042;
	int8_t BatteryTemperature041;
	int8_t BatteryTemperature040;
	int8_t BatteryTemperature039;
	int8_t BatteryTemperature038;
	int8_t BatteryTemperature037;
	int8_t BatteryTemperature036;
	int8_t BatteryTemperature035;
	int8_t BatteryTemperature034;
	int8_t BatteryTemperature033;
	int8_t BatteryTemperature032;
	int8_t BatteryTemperature031;
	int8_t BatteryTemperature030;
	int8_t BatteryTemperature029;
	int8_t BatteryTemperature028;
	int8_t BatteryTemperature027;
	int8_t BatteryTemperature026;
	int8_t BatteryTemperature025;
	int8_t BatteryTemperature024;
	int8_t BatteryTemperature023;
	int8_t BatteryTemperature022;
	int8_t BatteryTemperature021;
	int8_t BatteryTemperature020;
	int8_t BatteryTemperature019;
	int8_t BatteryTemperature018;
	int8_t BatteryTemperature017;
	int8_t BatteryTemperature016;
	int8_t BatteryTemperature015;
	int8_t BatteryTemperature014;
	int8_t BatteryTemperature013;
	int8_t BatteryTemperature012;
	int8_t BatteryTemperature011;
	int8_t BatteryTemperature010;
	int8_t BatteryTemperature009;
	int8_t BatteryTemperature008;
	int8_t BatteryTemperature007;
	int8_t BatteryTemperature006;
	int8_t BatteryTemperature005;
	int8_t BatteryTemperature004;
	int8_t BatteryTemperature003;
	int8_t BatteryTemperature002;
	int8_t BatteryTemperature001;
} BMT_t;

typedef struct sBMV{
	uint8_t SingleBatteryGroup256;
	float SingleBatteryVoltage256;
	uint8_t SingleBatteryGroup255;
	float SingleBatteryVoltage255;
	uint8_t SingleBatteryGroup254;
	float SingleBatteryVoltage254;
	uint8_t SingleBatteryGroup253;
	float SingleBatteryVoltage253;
	uint8_t SingleBatteryGroup252;
	float SingleBatteryVoltage252;
	uint8_t SingleBatteryGroup251;
	float SingleBatteryVoltage251;
	uint8_t SingleBatteryGroup250;
	float SingleBatteryVoltage250;
	uint8_t SingleBatteryGroup249;
	float SingleBatteryVoltage249;
	uint8_t SingleBatteryGroup248;
	float SingleBatteryVoltage248;
	uint8_t SingleBatteryGroup247;
	float SingleBatteryVoltage247;
	uint8_t SingleBatteryGroup246;
	float SingleBatteryVoltage246;
	uint8_t SingleBatteryGroup245;
	float SingleBatteryVoltage245;
	uint8_t SingleBatteryGroup244;
	float SingleBatteryVoltage244;
	uint8_t SingleBatteryGroup243;
	float SingleBatteryVoltage243;
	uint8_t SingleBatteryGroup242;
	float SingleBatteryVoltage242;
	uint8_t SingleBatteryGroup241;
	float SingleBatteryVoltage241;
	uint8_t SingleBatteryGroup240;
	float SingleBatteryVoltage240;
	uint8_t SingleBatteryGroup239;
	float SingleBatteryVoltage239;
	uint8_t SingleBatteryGroup238;
	float SingleBatteryVoltage238;
	uint8_t SingleBatteryGroup237;
	float SingleBatteryVoltage237;
	uint8_t SingleBatteryGroup236;
	float SingleBatteryVoltage236;
	uint8_t SingleBatteryGroup235;
	float SingleBatteryVoltage235;
	uint8_t SingleBatteryGroup234;
	float SingleBatteryVoltage234;
	uint8_t SingleBatteryGroup233;
	float SingleBatteryVoltage233;
	uint8_t SingleBatteryGroup232;
	float SingleBatteryVoltage232;
	uint8_t SingleBatteryGroup231;
	float SingleBatteryVoltage231;
	uint8_t SingleBatteryGroup230;
	float SingleBatteryVoltage230;
	uint8_t SingleBatteryGroup229;
	float SingleBatteryVoltage229;
	uint8_t SingleBatteryGroup228;
	float SingleBatteryVoltage228;
	uint8_t SingleBatteryGroup227;
	float SingleBatteryVoltage227;
	uint8_t SingleBatteryGroup226;
	float SingleBatteryVoltage226;
	uint8_t SingleBatteryGroup225;
	float SingleBatteryVoltage225;
	uint8_t SingleBatteryGroup224;
	float SingleBatteryVoltage224;
	uint8_t SingleBatteryGroup223;
	float SingleBatteryVoltage223;
	uint8_t SingleBatteryGroup222;
	float SingleBatteryVoltage222;
	uint8_t SingleBatteryGroup221;
	float SingleBatteryVoltage221;
	uint8_t SingleBatteryGroup220;
	float SingleBatteryVoltage220;
	uint8_t SingleBatteryGroup219;
	float SingleBatteryVoltage219;
	uint8_t SingleBatteryGroup218;
	float SingleBatteryVoltage218;
	uint8_t SingleBatteryGroup217;
	float SingleBatteryVoltage217;
	uint8_t SingleBatteryGroup216;
	float SingleBatteryVoltage216;
	uint8_t SingleBatteryGroup215;
	float SingleBatteryVoltage215;
	uint8_t SingleBatteryGroup214;
	float SingleBatteryVoltage214;
	uint8_t SingleBatteryGroup213;
	float SingleBatteryVoltage213;
	uint8_t SingleBatteryGroup212;
	float SingleBatteryVoltage212;
	uint8_t SingleBatteryGroup211;
	float SingleBatteryVoltage211;
	uint8_t SingleBatteryGroup210;
	float SingleBatteryVoltage210;
	uint8_t SingleBatteryGroup209;
	float SingleBatteryVoltage209;
	uint8_t SingleBatteryGroup208;
	float SingleBatteryVoltage208;
	uint8_t SingleBatteryGroup207;
	float SingleBatteryVoltage207;
	uint8_t SingleBatteryGroup206;
	float SingleBatteryVoltage206;
	uint8_t SingleBatteryGroup205;
	float SingleBatteryVoltage205;
	uint8_t SingleBatteryGroup204;
	float SingleBatteryVoltage204;
	uint8_t SingleBatteryGroup203;
	float SingleBatteryVoltage203;
	uint8_t SingleBatteryGroup202;
	float SingleBatteryVoltage202;
	uint8_t SingleBatteryGroup201;
	float SingleBatteryVoltage201;
	uint8_t SingleBatteryGroup200;
	float SingleBatteryVoltage200;
	uint8_t SingleBatteryGroup199;
	float SingleBatteryVoltage199;
	uint8_t SingleBatteryGroup198;
	float SingleBatteryVoltage198;
	uint8_t SingleBatteryGroup197;
	float SingleBatteryVoltage197;
	uint8_t SingleBatteryGroup196;
	float SingleBatteryVoltage196;
	uint8_t SingleBatteryGroup195;
	float SingleBatteryVoltage195;
	uint8_t SingleBatteryGroup194;
	float SingleBatteryVoltage194;
	uint8_t SingleBatteryGroup193;
	float SingleBatteryVoltage193;
	uint8_t SingleBatteryGroup192;
	float SingleBatteryVoltage192;
	uint8_t SingleBatteryGroup191;
	float SingleBatteryVoltage191;
	uint8_t SingleBatteryGroup190;
	float SingleBatteryVoltage190;
	uint8_t SingleBatteryGroup189;
	float SingleBatteryVoltage189;
	uint8_t SingleBatteryGroup188;
	float SingleBatteryVoltage188;
	uint8_t SingleBatteryGroup187;
	float SingleBatteryVoltage187;
	uint8_t SingleBatteryGroup186;
	float SingleBatteryVoltage186;
	uint8_t SingleBatteryGroup185;
	float SingleBatteryVoltage185;
	uint8_t SingleBatteryGroup184;
	float SingleBatteryVoltage184;
	uint8_t SingleBatteryGroup183;
	float SingleBatteryVoltage183;
	uint8_t SingleBatteryGroup182;
	float SingleBatteryVoltage182;
	uint8_t SingleBatteryGroup181;
	float SingleBatteryVoltage181;
	uint8_t SingleBatteryGroup180;
	float SingleBatteryVoltage180;
	uint8_t SingleBatteryGroup179;
	float SingleBatteryVoltage179;
	uint8_t SingleBatteryGroup178;
	float SingleBatteryVoltage178;
	uint8_t SingleBatteryGroup177;
	float SingleBatteryVoltage177;
	uint8_t SingleBatteryGroup176;
	float SingleBatteryVoltage176;
	uint8_t SingleBatteryGroup175;
	float SingleBatteryVoltage175;
	uint8_t SingleBatteryGroup174;
	float SingleBatteryVoltage174;
	uint8_t SingleBatteryGroup173;
	float SingleBatteryVoltage173;
	uint8_t SingleBatteryGroup172;
	float SingleBatteryVoltage172;
	uint8_t SingleBatteryGroup171;
	float SingleBatteryVoltage171;
	uint8_t SingleBatteryGroup170;
	float SingleBatteryVoltage170;
	uint8_t SingleBatteryGroup169;
	float SingleBatteryVoltage169;
	uint8_t SingleBatteryGroup168;
	float SingleBatteryVoltage168;
	uint8_t SingleBatteryGroup167;
	float SingleBatteryVoltage167;
	uint8_t SingleBatteryGroup166;
	float SingleBatteryVoltage166;
	uint8_t SingleBatteryGroup165;
	float SingleBatteryVoltage165;
	uint8_t SingleBatteryGroup164;
	float SingleBatteryVoltage164;
	uint8_t SingleBatteryGroup163;
	float SingleBatteryVoltage163;
	uint8_t SingleBatteryGroup162;
	float SingleBatteryVoltage162;
	uint8_t SingleBatteryGroup161;
	float SingleBatteryVoltage161;
	uint8_t SingleBatteryGroup160;
	float SingleBatteryVoltage160;
	uint8_t SingleBatteryGroup159;
	float SingleBatteryVoltage159;
	uint8_t SingleBatteryGroup158;
	float SingleBatteryVoltage158;
	uint8_t SingleBatteryGroup157;
	float SingleBatteryVoltage157;
	uint8_t SingleBatteryGroup156;
	float SingleBatteryVoltage156;
	uint8_t SingleBatteryGroup155;
	float SingleBatteryVoltage155;
	uint8_t SingleBatteryGroup154;
	float SingleBatteryVoltage154;
	uint8_t SingleBatteryGroup153;
	float SingleBatteryVoltage153;
	uint8_t SingleBatteryGroup152;
	float SingleBatteryVoltage152;
	uint8_t SingleBatteryGroup151;
	float SingleBatteryVoltage151;
	uint8_t SingleBatteryGroup150;
	float SingleBatteryVoltage150;
	uint8_t SingleBatteryGroup149;
	float SingleBatteryVoltage149;
	uint8_t SingleBatteryGroup148;
	float SingleBatteryVoltage148;
	uint8_t SingleBatteryGroup147;
	float SingleBatteryVoltage147;
	uint8_t SingleBatteryGroup146;
	float SingleBatteryVoltage146;
	uint8_t SingleBatteryGroup145;
	float SingleBatteryVoltage145;
	uint8_t SingleBatteryGroup144;
	float SingleBatteryVoltage144;
	uint8_t SingleBatteryGroup143;
	float SingleBatteryVoltage143;
	uint8_t SingleBatteryGroup142;
	float SingleBatteryVoltage142;
	uint8_t SingleBatteryGroup141;
	float SingleBatteryVoltage141;
	uint8_t SingleBatteryGroup140;
	float SingleBatteryVoltage140;
	uint8_t SingleBatteryGroup139;
	float SingleBatteryVoltage139;
	uint8_t SingleBatteryGroup138;
	float SingleBatteryVoltage138;
	uint8_t SingleBatteryGroup137;
	float SingleBatteryVoltage137;
	uint8_t SingleBatteryGroup136;
	float SingleBatteryVoltage136;
	uint8_t SingleBatteryGroup135;
	float SingleBatteryVoltage135;
	uint8_t SingleBatteryGroup134;
	float SingleBatteryVoltage134;
	uint8_t SingleBatteryGroup133;
	float SingleBatteryVoltage133;
	uint8_t SingleBatteryGroup132;
	float SingleBatteryVoltage132;
	uint8_t SingleBatteryGroup131;
	float SingleBatteryVoltage131;
	uint8_t SingleBatteryGroup130;
	float SingleBatteryVoltage130;
	uint8_t SingleBatteryGroup129;
	float SingleBatteryVoltage129;
	uint8_t SingleBatteryGroup128;
	float SingleBatteryVoltage128;
	uint8_t SingleBatteryGroup127;
	float SingleBatteryVoltage127;
	uint8_t SingleBatteryGroup126;
	float SingleBatteryVoltage126;
	uint8_t SingleBatteryGroup125;
	float SingleBatteryVoltage125;
	uint8_t SingleBatteryGroup124;
	float SingleBatteryVoltage124;
	uint8_t SingleBatteryGroup123;
	float SingleBatteryVoltage123;
	uint8_t SingleBatteryGroup122;
	float SingleBatteryVoltage122;
	uint8_t SingleBatteryGroup121;
	float SingleBatteryVoltage121;
	uint8_t SingleBatteryGroup120;
	float SingleBatteryVoltage120;
	uint8_t SingleBatteryGroup119;
	float SingleBatteryVoltage119;
	uint8_t SingleBatteryGroup118;
	float SingleBatteryVoltage118;
	uint8_t SingleBatteryGroup117;
	float SingleBatteryVoltage117;
	uint8_t SingleBatteryGroup116;
	float SingleBatteryVoltage116;
	uint8_t SingleBatteryGroup115;
	float SingleBatteryVoltage115;
	uint8_t SingleBatteryGroup114;
	float SingleBatteryVoltage114;
	uint8_t SingleBatteryGroup113;
	float SingleBatteryVoltage113;
	uint8_t SingleBatteryGroup112;
	float SingleBatteryVoltage112;
	uint8_t SingleBatteryGroup111;
	float SingleBatteryVoltage111;
	uint8_t SingleBatteryGroup110;
	float SingleBatteryVoltage110;
	uint8_t SingleBatteryGroup109;
	float SingleBatteryVoltage109;
	uint8_t SingleBatteryGroup108;
	float SingleBatteryVoltage108;
	uint8_t SingleBatteryGroup107;
	float SingleBatteryVoltage107;
	uint8_t SingleBatteryGroup106;
	float SingleBatteryVoltage106;
	uint8_t SingleBatteryGroup105;
	float SingleBatteryVoltage105;
	uint8_t SingleBatteryGroup104;
	float SingleBatteryVoltage104;
	uint8_t SingleBatteryGroup103;
	float SingleBatteryVoltage103;
	uint8_t SingleBatteryGroup102;
	float SingleBatteryVoltage102;
	uint8_t SingleBatteryGroup101;
	float SingleBatteryVoltage101;
	uint8_t SingleBatteryGroup100;
	float SingleBatteryVoltage100;
	uint8_t SingleBatteryGroup099;
	float SingleBatteryVoltage099;
	uint8_t SingleBatteryGroup098;
	float SingleBatteryVoltage098;
	uint8_t SingleBatteryGroup097;
	float SingleBatteryVoltage097;
	uint8_t SingleBatteryGroup096;
	float SingleBatteryVoltage096;
	uint8_t SingleBatteryGroup095;
	float SingleBatteryVoltage095;
	uint8_t SingleBatteryGroup094;
	float SingleBatteryVoltage094;
	uint8_t SingleBatteryGroup093;
	float SingleBatteryVoltage093;
	uint8_t SingleBatteryGroup092;
	float SingleBatteryVoltage092;
	uint8_t SingleBatteryGroup091;
	float SingleBatteryVoltage091;
	uint8_t SingleBatteryGroup090;
	float SingleBatteryVoltage090;
	uint8_t SingleBatteryGroup089;
	float SingleBatteryVoltage089;
	uint8_t SingleBatteryGroup088;
	float SingleBatteryVoltage088;
	uint8_t SingleBatteryGroup087;
	float SingleBatteryVoltage087;
	uint8_t SingleBatteryGroup086;
	float SingleBatteryVoltage086;
	uint8_t SingleBatteryGroup085;
	float SingleBatteryVoltage085;
	uint8_t SingleBatteryGroup084;
	float SingleBatteryVoltage084;
	uint8_t SingleBatteryGroup083;
	float SingleBatteryVoltage083;
	uint8_t SingleBatteryGroup082;
	float SingleBatteryVoltage082;
	uint8_t SingleBatteryGroup081;
	float SingleBatteryVoltage081;
	uint8_t SingleBatteryGroup080;
	float SingleBatteryVoltage080;
	uint8_t SingleBatteryGroup079;
	float SingleBatteryVoltage079;
	uint8_t SingleBatteryGroup078;
	float SingleBatteryVoltage078;
	uint8_t SingleBatteryGroup077;
	float SingleBatteryVoltage077;
	uint8_t SingleBatteryGroup076;
	float SingleBatteryVoltage076;
	uint8_t SingleBatteryGroup075;
	float SingleBatteryVoltage075;
	uint8_t SingleBatteryGroup074;
	float SingleBatteryVoltage074;
	uint8_t SingleBatteryGroup073;
	float SingleBatteryVoltage073;
	uint8_t SingleBatteryGroup072;
	float SingleBatteryVoltage072;
	uint8_t SingleBatteryGroup071;
	float SingleBatteryVoltage071;
	uint8_t SingleBatteryGroup070;
	float SingleBatteryVoltage070;
	uint8_t SingleBatteryGroup069;
	float SingleBatteryVoltage069;
	uint8_t SingleBatteryGroup068;
	float SingleBatteryVoltage068;
	uint8_t SingleBatteryGroup067;
	float SingleBatteryVoltage067;
	uint8_t SingleBatteryGroup066;
	float SingleBatteryVoltage066;
	uint8_t SingleBatteryGroup065;
	float SingleBatteryVoltage065;
	uint8_t SingleBatteryGroup064;
	float SingleBatteryVoltage064;
	uint8_t SingleBatteryGroup063;
	float SingleBatteryVoltage063;
	uint8_t SingleBatteryGroup062;
	float SingleBatteryVoltage062;
	uint8_t SingleBatteryGroup061;
	float SingleBatteryVoltage061;
	uint8_t SingleBatteryGroup060;
	float SingleBatteryVoltage060;
	uint8_t SingleBatteryGroup059;
	float SingleBatteryVoltage059;
	uint8_t SingleBatteryGroup058;
	float SingleBatteryVoltage058;
	uint8_t SingleBatteryGroup057;
	float SingleBatteryVoltage057;
	uint8_t SingleBatteryGroup056;
	float SingleBatteryVoltage056;
	uint8_t SingleBatteryGroup055;
	float SingleBatteryVoltage055;
	uint8_t SingleBatteryGroup054;
	float SingleBatteryVoltage054;
	uint8_t SingleBatteryGroup053;
	float SingleBatteryVoltage053;
	uint8_t SingleBatteryGroup052;
	float SingleBatteryVoltage052;
	uint8_t SingleBatteryGroup051;
	float SingleBatteryVoltage051;
	uint8_t SingleBatteryGroup050;
	float SingleBatteryVoltage050;
	uint8_t SingleBatteryGroup049;
	float SingleBatteryVoltage049;
	uint8_t SingleBatteryGroup048;
	float SingleBatteryVoltage048;
	uint8_t SingleBatteryGroup047;
	float SingleBatteryVoltage047;
	uint8_t SingleBatteryGroup046;
	float SingleBatteryVoltage046;
	uint8_t SingleBatteryGroup045;
	float SingleBatteryVoltage045;
	uint8_t SingleBatteryGroup044;
	float SingleBatteryVoltage044;
	uint8_t SingleBatteryGroup043;
	float SingleBatteryVoltage043;
	uint8_t SingleBatteryGroup042;
	float SingleBatteryVoltage042;
	uint8_t SingleBatteryGroup041;
	float SingleBatteryVoltage041;
	uint8_t SingleBatteryGroup040;
	float SingleBatteryVoltage040;
	uint8_t SingleBatteryGroup039;
	float SingleBatteryVoltage039;
	uint8_t SingleBatteryGroup038;
	float SingleBatteryVoltage038;
	uint8_t SingleBatteryGroup037;
	float SingleBatteryVoltage037;
	uint8_t SingleBatteryGroup036;
	float SingleBatteryVoltage036;
	uint8_t SingleBatteryGroup035;
	float SingleBatteryVoltage035;
	uint8_t SingleBatteryGroup034;
	float SingleBatteryVoltage034;
	uint8_t SingleBatteryGroup033;
	float SingleBatteryVoltage033;
	uint8_t SingleBatteryGroup032;
	float SingleBatteryVoltage032;
	uint8_t SingleBatteryGroup031;
	float SingleBatteryVoltage031;
	uint8_t SingleBatteryGroup030;
	float SingleBatteryVoltage030;
	uint8_t SingleBatteryGroup029;
	float SingleBatteryVoltage029;
	uint8_t SingleBatteryGroup028;
	float SingleBatteryVoltage028;
	uint8_t SingleBatteryGroup027;
	float SingleBatteryVoltage027;
	uint8_t SingleBatteryGroup026;
	float SingleBatteryVoltage026;
	uint8_t SingleBatteryGroup025;
	float SingleBatteryVoltage025;
	uint8_t SingleBatteryGroup024;
	float SingleBatteryVoltage024;
	uint8_t SingleBatteryGroup023;
	float SingleBatteryVoltage023;
	uint8_t SingleBatteryGroup022;
	float SingleBatteryVoltage022;
	uint8_t SingleBatteryGroup021;
	float SingleBatteryVoltage021;
	uint8_t SingleBatteryGroup020;
	float SingleBatteryVoltage020;
	uint8_t SingleBatteryGroup019;
	float SingleBatteryVoltage019;
	uint8_t SingleBatteryGroup018;
	float SingleBatteryVoltage018;
	uint8_t SingleBatteryGroup017;
	float SingleBatteryVoltage017;
	uint8_t SingleBatteryGroup016;
	float SingleBatteryVoltage016;
	uint8_t SingleBatteryGroup015;
	float SingleBatteryVoltage015;
	uint8_t SingleBatteryGroup014;
	float SingleBatteryVoltage014;
	uint8_t SingleBatteryGroup013;
	float SingleBatteryVoltage013;
	uint8_t SingleBatteryGroup012;
	float SingleBatteryVoltage012;
	uint8_t SingleBatteryGroup011;
	float SingleBatteryVoltage011;
	uint8_t SingleBatteryGroup010;
	float SingleBatteryVoltage010;
	uint8_t SingleBatteryGroup009;
	float SingleBatteryVoltage009;
	uint8_t SingleBatteryGroup008;
	float SingleBatteryVoltage008;
	uint8_t SingleBatteryGroup007;
	float SingleBatteryVoltage007;
	uint8_t SingleBatteryGroup006;
	float SingleBatteryVoltage006;
	uint8_t SingleBatteryGroup005;
	float SingleBatteryVoltage005;
	uint8_t SingleBatteryGroup004;
	float SingleBatteryVoltage004;
	uint8_t SingleBatteryGroup003;
	float SingleBatteryVoltage003;
	uint8_t SingleBatteryGroup002;
	float SingleBatteryVoltage002;
	uint8_t SingleBatteryGroup001;
	float SingleBatteryVoltage001;
} BMV_t;

typedef struct sBSM{
	uint8_t ChargingPermissible;
	uint8_t BatteryOutputConnectorState;
	uint8_t BatteryInsulationState;
	uint8_t BatteryExcessTemperature;
	uint8_t BatteryChargingOvercurrent;
	uint8_t StateOfCharge;
	uint8_t BatteryCellVoltageState;
	uint8_t BatteryLowestTempSerNo;
	int8_t BatteryLowestTemp;
	uint8_t BatteryHighestTempSerNo;
	int8_t BatteryHighestTemp;
	uint8_t SingleBatteryHighestVoltageSerNo;
} BSM_t;

typedef struct sCCS{
	uint8_t ChargingPermissible;
	uint16_t CumulativeChargingTime;
	float CurrentOutputValue;
	float VoltageOutputValue;
} CCS_t;

typedef struct sBCS{
	uint16_t EstimatedRemainingChargingTime;
	uint8_t CurrentChargeState;
	uint8_t GroupNrOfCellWithHighestVoltage;
	float HighestVoltageOfBatteryCell;
	float MeasuredChargingCurrent;
	float MeasuredChargingVoltage;
} BCS_t;

typedef struct sBCL{
	uint8_t ChargingMode;
	float CurrentDemand;
	float VoltageDemand;
} BCL_t;

typedef struct sCRO{
	uint8_t ChargerReadyForCharging;
} CRO_t;

typedef struct sBRO{
	uint8_t BmsReadyForCharging;
} BRO_t;

typedef struct sCML{
	float MinOutputCurrent;
	float MaxOutputCurrent;
	float MinOutputVoltage;
	float MaxOutputVoltage;
} CML_t;

typedef struct sCTS{
	uint8_t Centuries;
	uint8_t Years;
	uint8_t Months;
	uint8_t Days;
	uint8_t Hours;
	uint8_t Minutes;
	uint8_t Seconds;
} CTS_t;

typedef struct sBCP{
	float CurrentBatteryVoltage;
	float StatusOfCharge;
	int8_t MaxPermTemperature;
	float TotalMaxPermChargingVoltage;
	float TotalNominalEnergy;
	float MaxPermChargingCurrent;
	float MaxBattCellChargingVoltage;
} BCP_t;

typedef struct sBRM{
	uint32_t BmsSoftwareVersion_Reserved;
	uint16_t BmsSoftwareVersion_CompileYear;
	uint8_t BmsSoftwareVersion_CompileMonth;
	uint8_t BmsSoftwareVersion_CompileDay;
	uint8_t BmsSoftwareVersion_Serial;
	uint8_t BRM_Reserved1;
	uint8_t Property;
	uint32_t ChargingFrequency;
	uint8_t ProductionDay;
	uint8_t ProductionMonth;
	uint8_t ProductionYear;
	uint32_t BatteryPackNumber;
	uint32_t ManufacturerName;
	float BatterySystemVoltage;
	float BatterySystemCapacity;
	uint16_t BmsVersion;
	uint8_t BmsRevision;
	uint8_t BatteryType;
	uint8_t VIN[13];
} BRM_t;

typedef struct sCRM{
	uint32_t ChargerLocation;
	uint32_t ChargerNumber;
	uint8_t RecognitionResult;
} CRM_t;

typedef struct sBHM{
	float MaxChargingVoltage;
} BHM_t;

typedef struct sCHM{
	uint8_t MinorChargerVersion;
	uint16_t MajorChargerVersion;
} CHM_t;

extern DM3_t msgDM3;
extern DM2_t msgDM2;
extern DM1_t msgDM1;
extern CEM_t msgCEM;
extern BEM_t msgBEM;
extern CSD_t msgCSD;
extern BSD_t msgBSD;
extern CST_t msgCST;
extern BST_t msgBST;
extern BSP_t msgBSP;
extern BMT_t msgBMT;
extern BMV_t msgBMV;
extern BSM_t msgBSM;
extern CCS_t msgCCS;
extern BCS_t msgBCS;
extern BCL_t msgBCL;
extern CRO_t msgCRO;
extern BRO_t msgBRO;
extern CML_t msgCML;
extern CTS_t msgCTS;
extern BCP_t msgBCP;
extern BRM_t msgBRM;
extern CRM_t msgCRM;
extern BHM_t msgBHM;
extern CHM_t msgCHM;

extern uint8_t rawDM3[2]; 
extern uint8_t rawDM2[20]; 
extern uint8_t rawDM1[20]; 
extern uint8_t rawCEM[4]; 
extern uint8_t rawBEM[4]; 
extern uint8_t rawCSD[8]; 
extern uint8_t rawBSD[7]; 
extern uint8_t rawCST[4]; 
extern uint8_t rawBST[4]; 
extern uint8_t rawBSP[16]; 
extern uint8_t rawBMT[128]; 
extern uint8_t rawBMV[512]; 
extern uint8_t rawBSM[7]; 
extern uint8_t rawCCS[8]; 
extern uint8_t rawBCS[9]; 
extern uint8_t rawBCL[5]; 
extern uint8_t rawCRO[1]; 
extern uint8_t rawBRO[1]; 
extern uint8_t rawCML[8]; 
extern uint8_t rawCTS[7]; 
extern uint8_t rawBCP[13]; 
extern uint8_t rawBRM[49]; 
extern uint8_t rawCRM[8]; 
extern uint8_t rawBHM[2]; 
extern uint8_t rawCHM[3]; 

#endif

